package com.ruoyi.cs.mapper;

import java.util.List;

import com.ruoyi.common.core.domain.Response;
import com.ruoyi.cs.domain.TTaskReceive;
import org.apache.ibatis.annotations.Param;

/**
 * 用户任务领取记录Mapper接口
 * 
 * @author ruoyi
 * @date 2023-03-02
 */
public interface TTaskReceiveMapper 
{
    /**
     * 查询用户任务领取记录
     * 
     * @param id 用户任务领取记录主键
     * @return 用户任务领取记录
     */
    public TTaskReceive selectTTaskReceiveById(Long id);

    /**
     * 查询用户任务领取记录列表
     * 
     * @param tTaskReceive 用户任务领取记录
     * @return 用户任务领取记录集合
     */
    public List<TTaskReceive> selectTTaskReceiveList(TTaskReceive tTaskReceive);

    /**
     * 新增用户任务领取记录
     * 
     * @param tTaskReceive 用户任务领取记录
     * @return 结果
     */
    public int insertTTaskReceive(TTaskReceive tTaskReceive);

    /**
     * 修改用户任务领取记录
     * 
     * @param tTaskReceive 用户任务领取记录
     * @return 结果
     */
    public int updateTTaskReceive(TTaskReceive tTaskReceive);

    /**
     * 删除用户任务领取记录
     * 
     * @param id 用户任务领取记录主键
     * @return 结果
     */
    public int deleteTTaskReceiveById(Long id);

    /**
     * 批量删除用户任务领取记录
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTTaskReceiveByIds(Long[] ids);

    /**
     * 统计任务完成人数
     * @param startTime
     * @param endTime
     * @return
     */
    public long countTaskCompleteNum(@Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 批量查询用户每日任务领取记录
     * @param taskIds
     * @param userId
     * @return
     */
    public List<TTaskReceive> batchQueryEverydayReceive(@Param("taskIds") List<Long> taskIds,@Param("userId") String userId);

    public List<TTaskReceive> batchQueryEveryMonthReceive(@Param("taskIds") List<Long> taskIds,@Param("userId") String userId);


    /**
     * 批量查询用户成长任务领取记录
     * @param taskIds
     * @param userId
     * @return
     */
    public List<TTaskReceive> batchQueryGrowUpReceive(@Param("taskIds") List<Long> taskIds,@Param("userId") String userId);

    /**
     * 判断该每日任务是否领取
     * @param taskId
     * @param userId
     * @return
     */
    public long everydayReceiveById(@Param("taskId") Long taskId,@Param("userId") String userId);

    /**判断每月是否领取过*/
    public long everyMonthReceiveById(@Param("taskId") Long taskId,@Param("userId") String userId);

    /**
     * 判断该成长任务是否领取
     * @param taskId
     * @param userId
     * @return
     */
    public long growUpReceiveById(@Param("taskId") Long taskId,@Param("userId") String userId);
}
